﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Npgsql;
using Aeroporto.modelo;
using System.Collections;

namespace Aeroporto.bd
{
    class DisponibilizaDAO : GenericDAO
    {
        new public DataTable pesquisar(string tabela, string coluna, string nome)
        {
            try
            {                

                string sql;
                if (nome == "  /  /")
                    sql = "select * from " + tabela;
                else
                    sql = "select * from " + tabela + " where " + coluna + " = '" + nome + "'";
                Arquivo.escrever(sql);
                NpgsqlCommand command = new NpgsqlCommand(sql, Conexao.getConexao());
                NpgsqlDataAdapter da = new NpgsqlDataAdapter();
                da.SelectCommand = command;
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }
            catch (Exception erro)
            {
                throw erro;
            }
        }
        
        public MyMessageBox excluir(ArrayList chaves_primarias)
        {
            MyMessageBox mb = new MyMessageBox("", "");
            
            foreach(ArrayList aux in chaves_primarias) {
                mb = excluir("delete from disponibiliza where fila = '" + aux[0] + "' and numero = " + aux[1] + " and cod_aeronave = '" + aux[2] + "' and data_viagem = '" + aux[3] + "' and id_trecho = " + aux[4]);
                //Arquivo.escrever("delete from disponibiliza where fila = '" + aux[0] + "' and numero = " + aux[1] + " and cod_aeronave = '" + aux[2] + "' and data_viagem = '" + aux[3] + "' and id_trecho = " + aux[4]);
                if (mb.String2 == "Erro não foi removido.:")
                {
                    return mb;
                }
            }
            return mb;
        }

        /**
         *  Retorna true se já existe um registro na tabela passada por parâmentro                    
         **/
        public bool existe_registro(string fila, string numero, string cod_aeronave, string data_viagem, string id_trecho)
        {
            string sql = "select * from disponibiliza where fila = '" + fila + "' and numero = " + numero + " and cod_aeronave = '" + cod_aeronave + "' and data_viagem = '" + data_viagem + "' and id_trecho = " + id_trecho;
            NpgsqlDataReader datareader = Conexao.consulta(sql);
            bool hasrows = datareader.HasRows;
            datareader.Close();
            return hasrows;
        }

        /**
         * Atualiza os dados alterados nos TextEdit's 
         **/
        public bool update_dados(DisponibilizaModel disponibiliza)
        {
            try
            {                
                string sql;
                if (disponibiliza.Cod_reserva == 0)
                    sql = "update disponibiliza set cod_reserva = null where fila = '" + disponibiliza.Fila + "' and numero = " + disponibiliza.Numero + " and cod_aeronave = '" + disponibiliza.Cod_aeronave + "' and data_viagem = '" + disponibiliza.Data_viagem + "' and id_trecho = " + disponibiliza.Id_trecho;
                else
                    sql = "update disponibiliza set cod_reserva = " + disponibiliza.Cod_reserva + " where fila = '" + disponibiliza.Fila + "' and numero = " + disponibiliza.Numero + " and cod_aeronave = '" + disponibiliza.Cod_aeronave + "' and data_viagem = '" + disponibiliza.Data_viagem + "' and id_trecho = " + disponibiliza.Id_trecho ;                
                if (Conexao.consulta_2(sql) != "OK")
                    return false;
                Conexao.desconectar();
                return true;
            }
            catch (Exception erro)
            {
                Arquivo.escrever(erro.ToString());
            }
            return false;
        }

        public bool update_dados2(DisponibilizaModel disponibiliza2)
        {
            try
            {
                string sql2;
                if (disponibiliza2.Cod_reserva == 0)
                    sql2 = "update disponibiliza set cod_reserva = null where fila = '" + disponibiliza2.Fila + "' and numero = " + disponibiliza2.Numero + " and cod_aeronave = '" + disponibiliza2.Cod_aeronave + "' and data_viagem = '" + disponibiliza2.Data_viagem + "' and id_trecho = " + disponibiliza2.Id_trecho;
                else
                    sql2 = "update disponibiliza set cod_reserva = " + disponibiliza2.Cod_reserva + " where fila = '" + disponibiliza2.Fila + "' and numero = " + disponibiliza2.Numero + " and cod_aeronave = '" + disponibiliza2.Cod_aeronave + "' and data_viagem = '" + disponibiliza2.Data_viagem + "' and id_trecho = " + disponibiliza2.Id_trecho;

                if (Conexao.consulta(sql2).RecordsAffected == 0)
                    return false;
                Conexao.desconectar();
                return true;
            }
            catch (Exception erro)
            {
                Arquivo.escrever(erro.ToString());
            }
            return false;
        }
    }
}
